Java Technologies Hibernate Validator এর ধারণা গাইড ও নোট

383

Hibernate Validator হল Hibernate ফ্রেমওয়ার্কের একটি অংশ যা Bean Validation স্পেসিফিকেশন (JSR 303/JSR 380) অনুসরণ করে। এটি Java অ্যাপ্লিকেশনের ডেটা বৈধতা নিশ্চিত করার জন্য ব্যবহৃত হয়, যাতে আপনার ডোমেইন অবজেক্টগুলি সঠিক এবং স্বচ্ছভাবে কাজ করতে পারে। Hibernate Validator JavaBeans এর প্রোপার্টির মান যাচাই করার জন্য constraint annotations প্রদান করে, যেমন @NotNull, @Size, @Min, @Max, @Email, এবং আরও অনেকগুলি।

Hibernate Validator একটি খুব কার্যকরী টুল যা validation logic সরল করে তোলে এবং এটি বিভিন্ন প্রকারের ডেটার জন্য ডেটা ইন্টেগ্রিটি নিশ্চিত করে। Hibernate Validator-কে আপনার প্রোজেক্টে ব্যবহার করলে, আপনি আপনার ডেটার বৈধতা পরীক্ষা এবং কাস্টম validation rules যুক্ত করতে পারেন।


Hibernate Validator - প্রাথমিক ধারণা

Hibernate Validator আপনাকে annotations ব্যবহার করে অবজেক্টগুলির বৈধতা যাচাই করতে দেয়। এগুলি সাধারণত JavaBean properties বা DTO (Data Transfer Object) ক্লাসগুলির ক্ষেত্রের উপর প্রয়োগ করা হয়।

Hibernate Validator ডেটা মডেল ক্লাসে বা API স্তরে আপনার ডেটার সাথে সম্পর্কিত validation constraints সংজ্ঞায়িত করতে সাহায্য করে, যা server-side validation নিশ্চিত করে।

Hibernate Validator এর সুবিধা:

  1. Declarative Validation: Validation কনস্ট্রেইন্টগুলি annotations দ্বারা ডেক্লেয়ার করা হয়, যা কোডের পঠনযোগ্যতা এবং রক্ষণাবেক্ষণ সহজ করে।
  2. Integrates with Spring: Spring Framework এর সাথে Hibernate Validator সহজেই ইন্টিগ্রেট করা যায় এবং অটোমেটিকালিভাবে Bean Validation ফিচার ব্যবহার করা যায়।
  3. Custom Validation: Hibernate Validator কাস্টম validation রুলস তৈরি করতে সাহায্য করে, যা আপনার অ্যাপ্লিকেশনের বিশেষ চাহিদার জন্য উপযুক্ত।

Hibernate Validator - প্রাথমিক ব্যবহারের উদাহরণ

ধরা যাক, আমাদের একটি Employee ক্লাস রয়েছে এবং আমরা এই ক্লাসের বিভিন্ন প্রপার্টির উপর constraint annotations প্রয়োগ করতে চাই।

Step 1: Maven Dependency

Hibernate Validator ব্যবহার করতে হলে আপনাকে Maven প্রকল্পে এটি যুক্ত করতে হবে। Hibernate Validator JSR-303 এর উপর ভিত্তি করে তৈরি, এবং এটি Maven দ্বারা ইন্সটল করা যায়।

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.1.5.Final</version>
</dependency>

Step 2: Employee Class with Annotations

এখন, একটি Employee ক্লাস তৈরি করা হবে এবং এতে কিছু সাধারণ validation constraints প্রয়োগ করা হবে।

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.validation.constraints.Min;
import javax.validation.constraints.Email;

public class Employee {

    @NotNull(message = "Name cannot be null")
    @Size(min = 2, max = 100, message = "Name must be between 2 and 100 characters")
    private String name;

    @Min(value = 1, message = "Salary must be greater than or equal to 1")
    private double salary;

    @Email(message = "Email should be valid")
    private String email;

    // Getters and Setters
}

এখানে:

  • @NotNull: এটি নিশ্চিত করে যে name ফিল্ডটি null নয়।
  • @Size: এটি name ফিল্ডের দৈর্ঘ্য ২ থেকে ১০০ অক্ষরের মধ্যে থাকতে হবে।
  • @Min: এটি নিশ্চিত করে যে salary ফিল্ডের মান ১ এর কম হবে না।
  • @Email: এটি নিশ্চিত করে যে email ফিল্ডটি একটি বৈধ ইমেইল ঠিকানা হবে।

Step 3: Validator Setup

Hibernate Validator ব্যবহার করার জন্য একটি Validator অবজেক্ট তৈরি করতে হবে, যা আপনার Employee ক্লাসের বৈধতা পরীক্ষা করবে।

import org.hibernate.validator.HibernateValidator;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.ConstraintViolation;
import java.util.Set;

public class ValidatorExample {
    public static void main(String[] args) {
        // Step 1: Create a ValidatorFactory
        ValidatorFactory factory = Validation.byProvider(HibernateValidator.class)
                .configure()
                .buildValidatorFactory();

        // Step 2: Create Validator
        Validator validator = factory.getValidator();

        // Step 3: Create Employee instance
        Employee employee = new Employee();
        employee.setName("J");
        employee.setSalary(0);
        employee.setEmail("invalidEmail");

        // Step 4: Validate Employee object
        Set<ConstraintViolation<Employee>> violations = validator.validate(employee);

        // Step 5: Print validation results
        for (ConstraintViolation<Employee> violation : violations) {
            System.out.println(violation.getMessage());
        }
    }
}

Explanation of Code:

  1. ValidatorFactory: প্রথমে ValidatorFactory তৈরি করা হয়।
  2. Validator: Validator অবজেক্ট ব্যবহার করে ডেটা যাচাই করা হয়।
  3. Employee Object: Employee অবজেক্ট তৈরি করা হয় এবং এতে কিছু ভুল মান রাখা হয় (যেমন, নাম খুব ছোট, স্যালারি ০, ইমেইল ভুল)।
  4. Validation: validator.validate(employee) ব্যবহার করে ডেটার বৈধতা যাচাই করা হয়।
  5. Violation Messages: যদি কোনো constraint violation ঘটে, তবে violations সেটের মধ্যে সমস্ত ত্রুটি বার্তা থাকবে, যা আপনি কনসোলে দেখতে পাবেন।

Sample Output:

Name must be between 2 and 100 characters
Salary must be greater than or equal to 1
Email should be valid

Custom Validation Constraints

Hibernate Validator আপনাকে custom validation constraints তৈরি করার সুযোগ দেয়। আপনি annotation তৈরি করে এবং তাদের মধ্যে logic সংজ্ঞায়িত করে কাস্টম ভ্যালিডেটর তৈরি করতে পারেন।

Example: Custom Validator

ধরা যাক আমরা একটি কাস্টম ভ্যালিডেশন তৈরি করতে চাই যা সুনির্দিষ্ট একটি নামের ফরম্যাট পরীক্ষা করবে। যেমন, নামের প্রথম অক্ষরটি বড় হতে হবে।

Custom Annotation

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Constraint(validatedBy = NameValidator.class)
@Target({ElementType.FIELD, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ValidName {
    String message() default "Name must start with an uppercase letter";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

Validator Class

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class NameValidator implements ConstraintValidator<ValidName, String> {
    @Override
    public void initialize(ValidName constraintAnnotation) {}

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        if (value == null || value.isEmpty()) {
            return true;
        }
        return Character.isUpperCase(value.charAt(0));
    }
}

Using Custom Validator

public class Employee {
    @ValidName
    private String name;

    // Getters, Setters, Constructors
}

এখানে, @ValidName অ্যানোটেশনটি name ফিল্ডে প্রয়োগ করা হয়েছে, এবং NameValidator ক্লাসটি এটি যাচাই করবে যে নামের প্রথম অক্ষরটি বড় হাতের হতে হবে।


Hibernate Validator একটি শক্তিশালী টুল যা JavaBeans এবং ডেটা ট্রান্সফার অবজেক্টের জন্য validation সরল করে তোলে। এটি JSR 303/JSR 380 স্পেসিফিকেশন অনুসরণ করে এবং আপনাকে annotations ব্যবহার করে সহজে ডেটার বৈধতা পরীক্ষা করতে সহায়ক। Hibernate Validator আপনাকে predefined validation constraints যেমন @NotNull, @Email, @Size ইত্যাদি ব্যবহার করতে দেয়, এবং আপনি চাইলে custom validation তৈরি করারও সুযোগ পাবেন। এটি server-side validation নিশ্চিত করার জন্য অত্যন্ত উপযোগী এবং ডেটার integrity বজায় রাখতে সহায়ক।

Content added By
Promotion

Are you sure to start over?

Loading...